作者:gl君 | 来源:互联网 | 2023-09-24 09:49
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java 17新特性,快到起飞?惊呆了!相关的知识,希望对你有一定的参考价值。
都说Java 8 是YYDS,那你注意到 Java 17 也是长期支持版本吗?目前按计划 JDK 19 将于今年 9 月发布
SpringBoot 正式支持Java 17,Kafka3.0弃用Java8
Spring Boot 2.5.5是Spring Boot 第一个支持Java 17的版本。现在你已经可以从Spring Initializr初始化Spring Boot 支持 java17 版本了。
Java 17的14 个 新特性,分别是:
306:恢复始终严格的浮点语义
356:增强型伪随机数发生器
382:新的 macOS 渲染管道
391:macOS/AArch64 端口
398:弃用即将删除的 Applet API
403:强封装JDK的内部API
406:Switch模式匹配(预览)
407:删除 RMI 激活
409:密封类
410:删除实验性 AOT 和 JIT 编译器
411:弃用即将删除安全管理器
412:外部函数和内存 API(孵化器)
414:Vector API(第二次进行特性孵化)
415:特定于上下文的反序列化过滤器
在这14个功能中,哪一个对你最实用。
3年后的首个 LTS版本
据Oracle Java SE支持路线图显示,Java 17 是自Java 11以来的首个长期支持版本。Oracle 还提议将 JDK LTS 发布的节奏从每三年一次改为每两年一次,并且每个LTS 版本的服务时间至少8年以上。Java 版本通常是6个月一更新,时间分别在3月和9月,而这些版本的支持时间基本在半年左右。
Java各个版本的生命周期
据Oralce官博透露,虽然6个月版本的使用人数在增长,但大部分组织及企业更倾向于把LTS版本用在生产环境中,从而得到更加稳定可靠的服务。这一点从Snyk发布的2021 Java 社区报告中也可以得到证实,虽然有 61.5% 的人在生产中使用 Java 11,但仍有一半的 Java 11 用户(目前使用最多的版本)在他们的生产堆栈中使用 Java 8。
除了上面提到是14个重大更新和更快的LTS服务节奏外,Java 17还有哪些亮点呢?
Oracle 推出 Free Java License
自Java 被 Oralce 收购以后,付费 JDK 就一直被人诟病,现在好了,Oracle 宣布推出JDK免费服务。什么意思呢?让我们来看一下官方解释:
Oracle正在为行业提供免费的,领先的 Oralce JDK,包括所有季度安全更新,并包含商业和生产用途。
新许可是“Oracle 免费条款和条件”(NFTC) 许可。此 Oracle JDK 许可证允许所有用户免费使用,甚至可以用于商业和生产用途。只要不收费,再分发是允许的。
开发人员和组织现在无需点击即可轻松下载、使用、共享和重新分发 Oracle JDK。
Oracle 将从Oracle JDK 17 开始提供这些免费版本和更新,并在下一个 LTS 版本之后继续提供整整一年。以前的版本不受此更改的影响。
Oracle 将继续按照自 Java 9 以来的相同版本和时间表提供GPL下的Oracle OpenJDK 版本。
总结成一句话,“免费”也并不意味着开发者可以随心所欲,因为 Oracle 的 NFTC 是禁止付费重新分发其 Java 软件。
而在Java 17 正式发布之前,Java 开发框架 Spring 率先在官博宣布,Spring Framework 6 和Spring Boot 3 计划在 2022 年第四季度实现总体可用性的高端基线:
通过实际行动来支持 Java 17,间接呼吁开发者,是时候使用 Java 17了。
要不要升级呢?Java 17 到底有多快?
看到如此诚意满满的更新,开发者到底要不要升级呢?尽管只需切换JDK即可体验Java 17。对此,OptaPlanner网站做了一项基准测试:Java到底有多快?通过比较 JDK 17、JDK 16 和 JDK 11 来告诉你答案。
基准方法
openjdk 11.0.12 2021-07-20
OpenJDK Runtime Environment Temurin-11.0.12+7 (build 11.0.12+7)
OpenJDK 64-Bit Server VM Temurin-11.0.12+7 (build 11.0.12+7, mixed mode)
openjdk 16.0.2 2021-07-20
OpenJDK Runtime Environment (build 16.0.2+7-67)
OpenJDK 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)
openjdk 17 2021-09-14
OpenJDK Runtime Environment (build 17+35-2724)
OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)
JVM 选项:-Xmx3840M
并明确指定垃圾收集器:
-XX:+UseG1GC
对于 G1GC,低延迟垃圾收集器(所有三个 JDK 中的默认值)。
-XX:+UseParallelGC
对于 ParallelGC,高吞吐量垃圾收集器。
Main class:org.optaplanner.examples.app.GeneralOptaPlannerBenchmarkApp
来自 optaplanner-examplesOptaPlanner
中的模块8.10.0.Final。
每次运行都使用 OptaPlanner 解决 11 个规划问题,例如 员工排班、 学校时间表和云优化。每个规划问题运行 5 分钟。日志记录设置为INFO
。基准测试以 30 秒的 JVM
预热(warm up)开始,随后丢弃。
解决规划问题不涉及IO
(除了在启动期间加载输入的几毫秒)。单个CPU
完全饱和。它不断地创建许多短期存在的对象,然后 GC
将它们收集起来。
基准衡量每秒计算的分数数量,越高越好。为测试计划规划的解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。
运行次数:每个 JDK
和每个垃圾收集器组合按顺序运行 3 次。下面的结果是这 3 次运行的平均值。
测试结果
Java 11 (LTS) 和 Java 16 与 Java 17 (LTS)
表1. 在不同 JDK 上使用 G1GC 的每秒计算得分
表2. 在不同 JDK 上使用 ParallelGC 的每秒计算得分
备注:
查看 3 次单独运行的原始数据(此处未显示),机器重新分配数(B1 和 B10)在同一 JDK 和 GC 上的运行之间波动很大,通常超过10%,其他数字不会受到这种不可靠性的影响。
可以以说忽略 Machine Reassignment numbers 更好。但是为了避免挑选数据的问题,这些结果和平均值确实把它们包括进来了。
Java 17 上的 G1GC 与 ParallelGC
表3.JDK 17 下不同 GC 每秒的计算得分
基准测试总结
平均而言,以 OptaPlanner 为例的基准测试结果表明:
对于 G1GC(默认),Java 17 比 Java 11 快 8.66%,比 Java 16 快 2.41%。
对于 ParallelGC,Java 17 比 Java 11 快 6.54%,比 Java 16 快 0.37%。
Parallel GC 比 G1 GC 快 16.39%。
结果并无太大的惊喜表现:最新的 JDK 更快,高吞吐量垃圾收集器比低延迟垃圾收集器更快。
多说一句
在基于JDK 15 的基准测试中,Java 15 比 Java 11 快 11.24%。现在,Java 17 相对于 Java 11 的增益更少。这是否意味着 Java 17 比 Java 15 慢?
答案是否定的,Java 17 依然比 Java 15 快,因为之前的那些基准测试是在不同的代码库上运行的(OptaPlanner 7.44 而不是 8.10)。不要拿橙子与苹果作比较,不具有可比性。
结论
总而言之,JDK17 的性能表现还是非常值得升级的,至少于OptaPlanner Demo 而言。
此外,这些用例最快的垃圾收集器仍然是ParallelGC, 而不是G1GC(默认)。
作为3年后首次发布的LTS版本的Java 17给你带来了哪些惊喜?面对Go、Kotlion等JVM的强势发展,你觉得Java还能保持霸主地位吗?
如何快速掌握全部 Java17 新特性
Java 诞生 27 年来,这本享誉全球的 Java 经典著作《Core Java》一路伴随着 Java 的成长,得到了百万 Java 开发者的青睐,几乎出现在每个“学Java要看什么书”类似的书单里,影响了几代技术人。
27年间,每当 Java 有新的 LTR 版本发布,这本书都会随之更新,这次也不例外。现在,针对 Java 17 新特性的《Java核心技术》第 12 版*中文版(卷1)终于上市了!
《Java核心技术》第 12 版涵盖了 Java 17 的最新特性,相应调整了部分内容结构,同时延续之前版本的优良传统,利用清晰明了的示例加以解释,并提供了全部示例代码,以便读者学习和灵活应用。它将续写从前的辉煌,使开发者能及时跟上 Java 前进的步伐。
50多位曾经看着《Java核心技术》这本书成长起来的KOL推荐本书!大家的寄语全部收录在第12版新书中!
这本书究竟是怎样的一本书,得到众多开发者的一致推荐呢?
●《Java核心技术》并非市面那些零基础速成的书,很好地避免了开发基础书容易犯的“大而泛”的问题,尽管内容繁多,但对知识点的介绍并非泛泛而过。通过周密组织,从Java繁杂的内容中整理出一条清晰的主线,构成一个完整的知识体系。
● 整本书不仅让你深入了解设计和实现Java应用涉及的所有基础知识和Java特性,还会帮助你掌握开发Java程序所需的全部基本技能。
● 作者凯.霍斯特曼是Java技术坚定的倡导者,至今仍常年在国际上的各类计算机峰会上进行技术分享。在位于硅谷中心的圣何塞州立大学教学30余年,为硅谷的顶尖科技公司培养了大量计算机专业人才。非常熟知大厂要什么!所以他的书也是非常有针对性。
● 为帮助大家更轻松地学习Java,作者还亲自录制了配套视频讲解课程,视频配有中文配音+中文字幕,与纸书涵盖内容基本一致,适配Java SE8以后的版本。纸书+视频搭配学习,学习Java更轻松。(B站搜索“Java核心技术站”直达)。
......
相信在学习Java的道路上有了《Java核心技术》这本书的辅助,你一定可以做到事半功倍。
新书上市,在各大平台本书均有大力度的折扣,还不快闭眼入手
▲点击以上图片进入专题